﻿import api from '../../utils/api'
const app = getApp()
Page({
  /**
   * 页面的初始数据
   */
  data: {
    navBarHeight: app.globalData.navBarHeight, //导航栏高度
    menuBotton: app.globalData.menuBotton, //导航栏距离顶部距离
    menuHeight: app.globalData.menuHeight, //导航栏高度
    season: null,
    seasons_top: [
      '/images/bg_top_spring@2x.png',
      '/images/bg_top_summer@2x.png',
      '/images/bg_top_fall@2x.png',
      '/images/bg_top_winter@2x.png',
    ],
    seasons_bottom: [
      '/images/bg_bottom_spring@2x.png',
      '/images/bg_bottom_summer@2x.png',
      '/images/bg_bottom_fall@2x.png',
      '/images/bg_bottom_winter@2x.png',
    ],
    userInfo: {},
    hasUserInfo: false,
    canIUse: wx.canIUse('button.open-type.getUserInfo'),
    hasLogin: false,
    hasReg: false,
    today: "",
    userName: "",
    modelShow: {
      BUS: false, // 班车信息
      IDLE_ITEMS: false, // 闲置物品
      CLOUD_CUSTOMER: false, // 云客服
      VISITOR: false, // 出入管理
      DIGITAL: false, // 党建数字人
      HALL: false, // 党风廉政教育展厅
      CHAT_AI: false // 智慧小C
    },



    // text: "你好",
    // animation: null,
    // timer: null,
    // duration: 0,
    // textWidth: 0,
    // wrapWidth: 0,
    noticeList: [],
    noticeListTotal: 0,
    hasGuanzhu: true,  // 默认true已关注，解决登录未完成时文案闪现问题
  },
  handleContact: function (e) {
    // console.log(e)
  },
  /**
   * 生命周期函数--监听页面加载
   */
  //从登录返回的数据判断是否已关注公众号
  isGuanzhu: function () {
    let logindata = wx.getStorageSync('logindata')
    if (!logindata.data.wxmpOpenid) {  // 未关注
      this.setData({ hasGuanzhu: false })
    }
  },
  // 判断是否从外部链接打开进入小程序
  fromGZH: function (wxmpOpenid) {
    let _this = this
    // if (this.data.wxmpOpenid) {
      // console.log('公众号', wxmpOpenid)
      let logindata = wx.getStorageSync('logindata')
      //判断是否已绑定
      if (logindata.data.wxmpOpenid && wxmpOpenid == logindata.data.wxmpOpenid) {
        // console.log('绑定过了')
        _this.setData({ hasGuanzhu: true })
      } else {
        // console.log("binding")
        wx.request({
          url: api.bindOpenid,
          method: "POST",
          data: {
            wxmpOpenid: wxmpOpenid
            // wxmpOpenid: '789789'
          },
          header: {
            'content-type': 'application/json',
            'token': wx.getStorageSync('token')
          },
          success: res => {
            //设置隐藏提醒关注字样
            if (res.data.state == 1) {
              // console.log('关注成功')
              // 更新storage里存储的用户信息，是为了解决用户未reg的情况从login页面过来时hasGuanzhu默认为false的情况
              logindata.data.wxmpOpenid = wxmpOpenid
              wx.setStorage({
                data: logindata,
                key: 'logindata',
              })
              _this.setData({
                hasGuanzhu: true
              })
            }
          }
        })
      }
    // }
  },
  onLoad: function (options) {
    // console.log('hasReg是否注册', this.data.hasReg)
    // 从登录页进入判断是否已关注
    if (options.from == "login") {
      this.isGuanzhu ()
      // let logindata = wx.getStorageSync('logindata')
      // if (logindata.data.wxmpOpenid) {
      //   this.setData({
      //     hasGuanzhu: true
      //   })
      // }
    }
    
    // //判断是否已登录
    // this.setData({
    //   hasReg: wx.getStorageSync('hasReg')
    // })

    if (app.globalData.userInfo) {
      this.setData({
        userInfo: app.globalData.userInfo,
        hasUserInfo: true
      })
    } else if (this.data.canIUse) {
      // 由于 getUserInfo 是网络请求，可能会在 Page.onLoad 之后才返回
      // 所以此处加入 callback 以防止这种情况
      app.userInfoReadyCallback = res => {
        this.setData({
          userInfo: res.userInfo,
          hasUserInfo: true
        })
      }
      wx.getUserInfo({
        success: res => {
          app.globalData.userInfo = res.userInfo
          this.setData({
            userInfo: res.userInfo,
            hasUserInfo: true
          })
        },
        fail: err => {
          console.log(err)
        }
      })
    } else {
      // 在没有 open-type=getUserInfo 版本的兼容处理
      wx.getUserInfo({
        success: res => {
          app.globalData.userInfo = res.userInfo
          this.setData({
            userInfo: res.userInfo,
            hasUserInfo: true
          })
        }
      })
    }

    // 适用正常已登录过和手机授权成功返回
    if (app.globalData.hasLogin) {
      // 从login页面过来会走这里
      // console.log('登录成功过的')
      this.setData({
        hasLogin: app.globalData.hasLogin,
        // hasReg: wx.getStorageSync('hasReg')
        hasReg: app.globalData.hasReg
      })
      this.getInfo();
      this.getModuleData()
    } else { // 适用于app.js里面的登录
      app.hasLoginCallback = (hasLogin) => {
        //判断是否已关注公众号
        // let logindata = wx.getStorageSync('logindata')
        // // console.log(logindata)
        // if (!logindata.data.wxmpOpenid) {
        //   this.setData({
        //     hasGuanzhu: true
        //   })
        // }
        console.log(hasLogin)
        if (hasLogin) {
          // console.log('登录成功回调')
          if (options.wxmpOpenid) {
            this.fromGZH (options.wxmpOpenid)
          }
          console.log('reg==' + wx.getStorageSync('hasReg'))
          console.log('userName==' + wx.getStorageSync('userName'))
          console.log('reg===' + app.globalData.hasReg)
          this.setData({
            hasLogin: hasLogin,
            // hasReg: wx.getStorageSync('hasReg'),
            hasReg: app.globalData.hasReg,
            userName: wx.getStorageSync('userName')
          })
          this.getInfo()
          this.getModuleData()
          if (this.data.hasReg) { 
            this.isGuanzhu ()
          }
        }
      }
    }
    //取得用户名
    // this.setData({
    //   userName: wx.getStorageSync('userName')
    // })
    //计算周几
    var weekDate = new Date().getDay()
    if (weekDate == 1) {
      weekDate = "一"
    }
    if (weekDate == 2) {
      weekDate = "二"
    }
    if (weekDate == 3) {
      weekDate = "三"
    }
    if (weekDate == 4) {
      weekDate = "四"
    }
    if (weekDate == 5) {
      weekDate = "五"
    }
    if (weekDate == 6) {
      weekDate = "六"
    }
    if (weekDate == 0) {
      weekDate = "日"
    }
    //设置日期
    let month = new Date().getMonth() + 1
    let todayDate = (new Date().getMonth() + 1) + "月" + new Date().getDate() + "日" + " " + "星期" + weekDate
    this.setData({
      season: (month >= 1 && month < 4) ? 0 : (month >= 4 && month < 7) ? 1 : (month >= 7 && month < 10) ? 2 : 3,
      today: todayDate
    })
  },
  // 获取部门数据
  getModuleData() {
    let menuCode = wx.getStorageSync('logindata')?.data?.menuCode;
    // console.log(menuCode)
    let modelShow = this.data.modelShow;
    Object.keys(modelShow).forEach(i => {
      modelShow[i] = false
    })
    if(menuCode) {
      menuCode.split(',').forEach(i => {
        modelShow[i] = true
      })
      this.setData({
        modelShow
      })
    }
  },
  getUserInfo: function (e) {
    app.globalData.userInfo = e.detail.userInfo
    this.setData({
      userInfo: e.detail.userInfo,
      hasUserInfo: true
    })
  },
  // 请求公告及模块是否展示
  getInfo: function () {
    //请求公告
    wx.request({
      url: api.getNotice,
      method: "GET",
      header: {
        'content-type': 'application/json',
        'token': wx.getStorageSync('token')
      },
      success: res => {
        for (var i = 0; i < res.data.data.size; i++) {
          var title = res.data.data.list[i].title
          var content = res.data.data.list[i].content
          var startTime = res.data.data.list[i].startTime
          var noticeList = {
            title,
            content,
            startTime
          }
          this.data.noticeList.push(noticeList)
        }
        this.setData({
          noticeList: this.data.noticeList,
          noticeListTotal: res.data.data.size
        })
      }
    })
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {},

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
    // this.initAnimation(this.data.text)
    // console.log('是否login成功' + this.data.hasLogin)
    // console.log('hasReg是否注册', this.data.hasReg)
    if (this.data.hasLogin) {
      let arr = getCurrentPages(); //获取页面栈
      // console.log("页面栈", arr);
      // console.log(arr[arr.length -1].options) // 上一个页面传递的参数
      if (arr[arr.length -1].options.wxmpOpenid) {  // 公众号过来的
        // this.setData({   // 注册过再从公众号扫码进入，这里可以不要
        //   hasReg: wx.getStorageSync('hasReg')
        // })
        this.fromGZH (arr[arr.length -1].options.wxmpOpenid)
      }
    } else {
      // 小程序删掉了，没有缓存，公众号直接扫码打开，app.js里还未登录完成，绑定公众号就放到登录回调里面
    }
  },
  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {
    // this.destroyTimer()
    // this.setData({
    //   timer: null
    // })
  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {
    // this.destroyTimer()
    // this.setData({
    //   timer: null
    // })
  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  },
  goToBus: function (e) {
    if (this.data.hasLogin == false) {
      wx.showToast({
        title: '重启小程序登陆',
        icon: 'error',
      })
    } else if (this.data.hasReg == false) {
      wx.showToast({
        title: '请点击登陆',
        icon: 'error',
      })
    } else if (this.data.hasReg == true && this.data.hasLogin == true) {
      wx.navigateTo({
        url: "/pages/bus/bus",
      })
    }
  },
  goToCanteen: function (e) {
    if (this.data.hasLogin == false) {
      wx.showToast({
        title: '重启小程序登陆',
        icon: 'error',
      })
    } else if (this.data.hasReg == false) {
      wx.showToast({
        title: '请点击登陆',
        icon: 'error',
      })
    } else if (this.data.hasReg == true && this.data.hasLogin == true) {
      // wx.showToast({
      //   title: '功能待开发',
      // })
      wx.navigateTo({
        url: '/pages/canteen/canteen?canteenNo=' + e.currentTarget.dataset.num,
      })
    }
  },
  goToMarket: function (e) {
    if (this.data.hasLogin == false) {
      wx.showToast({
        title: '重启小程序登陆',
        icon: 'error',
      })
    } else if (this.data.hasReg == false) {
      wx.showToast({
        title: '请点击登陆',
        icon: 'error',
      })
    } else if (this.data.hasReg == true && this.data.hasLogin == true) {
      // wx.showToast({
      //   title: '功能待开发',
      // })
      wx.navigateTo({
        url: '/pages/market/market',
      })
    }
  },
  goToLogin: function (e) {
    wx.navigateTo({
      url: '/pages/login/login',
    })
  },
  goToFeedback: function () {
    let logindata = wx.getStorageSync('logindata')
    if (this.data.hasLogin == false) {
      wx.showToast({
        title: '重启小程序登陆',
        icon: 'error',
      })
    } else if (this.data.hasReg == false) {
      wx.showToast({
        title: '请点击登陆',
        icon: 'error',
      })
    } else if (this.data.hasReg == true && this.data.hasLogin == true) {
      const logindata = wx.getStorageSync('logindata')
      if (logindata.data.userType == "00") {
        wx.navigateTo({
          url: '/pages/feedback/feedback'
        })
      } else {
        wx.navigateTo({
          url: '/pages/feedbackReply/feedbackReply'
        })
      }
    }

  },

  goToForm: function () {
    if (this.data.hasLogin == false) {
      wx.showToast({
        title: '重启小程序登陆',
        icon: 'error',
      })
    } else if (this.data.hasReg == false) {
      wx.showToast({
        title: '请点击登陆',
        icon: 'error',
      })
    } else if (this.data.hasReg == true && this.data.hasLogin == true) {
      // wx.showToast({
      //   title: '功能待开发',
      // })
      wx.navigateTo({
        url: '/pages/formHome/formHome',
      })
    }
  },
  goToNotice: function (e) {
    var that = this
    var listData = JSON.stringify(that.data.noticeList)
    wx.navigateTo({
      url: "/pages/notice/notice?noticeList=" + listData,
    })
  },
  goToGuanzhu: function (e) {
    wx.navigateTo({
      url: "/pages/guanzhu/guanzhu",
    })
  },
  goToUserCenter: function () {
    if (this.data.hasLogin == false) {
      wx.showToast({
        title: '重启小程序登陆',
        icon: 'error',
      })
    } else if (this.data.hasReg == false) {
      wx.showToast({
        title: '请点击登陆',
        icon: 'error',
      })
    } else if (this.data.hasReg == true && this.data.hasLogin == true) {
      // wx.showToast({
      //   title: '功能待开发',
      // })
      wx.navigateTo({
        url: '/pages/userCenter/userCenter',
      })
    }
  },

  // destroyTimer() {
  //   if (this.data.timer) {
  //     clearTimeout(this.data.timer);
  //   }
  // },
  // /**
  //  * 开启公告字幕滚动动画
  //  * @param  {String} text 公告内容
  //  * @return {[type]} 
  //  */
  // initAnimation(text) {
  //   let that = this
  //   this.data.duration = 15000
  //   this.data.animation = wx.createAnimation({
  //     duration: this.data.duration,
  //     timingFunction: 'linear'
  //   })
  //   let query = wx.createSelectorQuery()
  //   query.select('.content-box').boundingClientRect()
  //   query.select('#text').boundingClientRect()
  //   query.exec((rect) => {
  //     that.setData({
  //       wrapWidth: rect[0].width,
  //       textWidth: rect[1].width
  //     }, () => {
  //       this.startAnimation()
  //     })
  //   })
  // },
  // // 定时器动画
  // startAnimation() {
  //   //reset
  //   // this.data.animation.option.transition.duration = 0
  //   const resetAnimation = this.data.animation.translateX(this.data.wrapWidth).step({
  //     duration: 0
  //   })
  //   this.setData({
  //     animationData: resetAnimation.export()
  //   })
  //   // this.data.animation.option.transition.duration = this.data.duration
  //   const animationData = this.data.animation.translateX(-this.data.textWidth).step({
  //     duration: this.data.duration
  //   })
  //   setTimeout(() => {
  //     this.setData({
  //       animationData: animationData.export()
  //     })
  //   }, 100)
  //   const timer = setTimeout(() => {
  //     this.startAnimation()
  //   }, this.data.duration)
  //   this.setData({
  //     timer
  //   })
  // },
  goToDigital: function (e) {
    if (this.data.hasLogin == false) {
      wx.showToast({
        title: '重启小程序登陆',
        icon: 'error',
      })
    } else if (this.data.hasReg == false) {
      wx.showToast({
        title: '请点击登陆',
        icon: 'error',
      })
    } else if (this.data.hasReg == true && this.data.hasLogin == true) {
      wx.navigateToMiniProgram({
        appId: 'wx702e7833d34cdcc5',  //appid
        path: '/pages/index/index?appId=i-njwttks30m7vn&appKey=4pstag8e87dyqp87vw7y',//path
        // extraData: {  //参数
        //   appId: 'i-njwttks30m7vn',
        //   appKey: '4pstag8e87dyqp87vw7y'
        // },
        envVersion: 'release', //develop 开发版 trial   体验版 release 正式版 
        success(res) {
//           console.log('成功')
        // 打开成功
        }
      })
    }
  },
  goToExibition: function () {
    if (this.data.hasLogin == false) {
      wx.showToast({
        title: '重启小程序登陆',
        icon: 'error',
      })
    } else if (this.data.hasReg == false) {
      wx.showToast({
        title: '请点击登陆',
        icon: 'error',
      })
    } else if (this.data.hasReg == true && this.data.hasLogin == true) {
      // wx.showToast({
      //   title: '功能待开发',
      // })
      wx.navigateTo({
        url: '/pages/exibition/exibition',
      })
    }
  },
  goToDev1: function (e) {
    if (this.data.hasLogin == false) {
      wx.showToast({
        title: '重启小程序登陆',
        icon: 'error',
      })
    } else if (this.data.hasReg == false) {
      wx.showToast({
        title: '请点击登陆',
        icon: 'error',
      })
    } else if (this.data.hasReg == true && this.data.hasLogin == true) {
      // wx.showToast({
      //   title: '功能待开发',
      // })
      wx.navigateTo({
        url: "/pages/dev1/dev1?from=menu",
      })
    }
  },
  goToChatRobot: function () {
    if (this.data.hasLogin == false) {
      wx.showToast({
        title: '重启小程序登陆',
        icon: 'error',
      })
    } else if (this.data.hasReg == false) {
      wx.showToast({
        title: '请点击登陆',
        icon: 'error',
      })
    } else if (this.data.hasReg == true && this.data.hasLogin == true) {
      // wx.showToast({
      //   title: '功能待开发',
      // })
      wx.navigateTo({
        url: '/pages/chatRobot/chatRobot',
      })
    }
  },
  goToParty: function (e) {
    if (this.data.hasLogin == false) {
      wx.showToast({
        title: '重启小程序登陆',
        icon: 'error',
      })
    } else if (this.data.hasReg == false) {
      wx.showToast({
        title: '请点击登陆',
        icon: 'error',
      })
    } else if (this.data.hasReg == true && this.data.hasLogin == true) {
      // wx.showToast({
      //   title: '功能待开发',
      // })
      wx.navigateTo({
        url: '/pages/party/party'
      })
    }
  },
})